package com.ziven.common.widget.value;

import android.view.View;
import android.widget.ImageView;

import androidx.annotation.NonNull;

import com.ziven.easygo.util.ViewHelper;

/**
 * @author Ziven
 */
public final class ScaleType extends Value {

    public static ScaleType scaleType(ImageView.ScaleType scaleType) {
        return new ScaleType().accept(my -> my.value = scaleType);
    }

    public static ScaleType matrix() {
        return scaleType(ImageView.ScaleType.MATRIX);
    }

    public static ScaleType fitXy() {
        return scaleType(ImageView.ScaleType.FIT_XY);
    }

    public static ScaleType fitStart() {
        return scaleType(ImageView.ScaleType.FIT_START);
    }

    public static ScaleType fitCenter() {
        return scaleType(ImageView.ScaleType.FIT_CENTER);
    }

    public static ScaleType fitEnd() {
        return scaleType(ImageView.ScaleType.FIT_END);
    }

    public static ScaleType center() {
        return scaleType(ImageView.ScaleType.CENTER);
    }

    public static ScaleType centerCrop() {
        return scaleType(ImageView.ScaleType.CENTER_CROP);
    }

    public static ScaleType centerInside() {
        return scaleType(ImageView.ScaleType.CENTER_INSIDE);
    }

    private ScaleType() {}

    @Override
    protected void takeEffect(@NonNull ViewHelper<? extends View> helper) {
        helper.getViewNulls().doNotNull(
                view -> value(ImageView.ScaleType.class,
                        scaleType -> {
                            if(view instanceof ImageView) {
                                ((ImageView) view).setScaleType(scaleType);
                            }
        }));
    }
}
